{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 与学习相关的技巧\n",
    "\n",
    "本章涉及寻找最优权重参数的最优化方法、权重参数的初始值、超参数的设定方法等。此外，为了应对过拟合，本章还将介绍权值衰减、Dropout等正则化方法。最后对近年来众多研究中使用的 Batch Normalization 方法进行简单的介绍。使用本章介绍的方法，可以高效地进行神经网络（深度学习）的学习，提高识别精度。\n",
    "\n",
    "### 参数更新\n",
    "神经网络的学习的目的是找到使损失函数的值尽可能小的参数。这是寻找最优参数的问题，解决这个问题的过程称为**最优化(optimization)**。<br>\n",
    "前几章中，为了找到最优参数，我们将参数的梯度(导数)作为线索。使用参数的梯度，沿梯度方向更新参数，并重复这个步骤多次，从而逐渐靠近最优参数，这个过程称为**随机梯度下降法**(stochastic gradient descent)，简称**SGD**。SGD是一个简单地方法，也算是“聪明”的方法。但是，根据不同的问题，也存在比SGD更聪明的方法。我们将指出SGD的缺点，并介绍SGD以外的其他最优化方法。\n",
    "\n",
    "\n",
    "#### SGD\n",
    "用数学式可以将SGC写成如下的式子。\n",
    "$$\n",
    "W \\leftarrow W - \\eta \\frac {\\partial L}{\\partial W}\n",
    "$$\n",
    "这里把需要更新的权重参数记 $W$，把损失函数关于 $W$ 的梯度记为 $\\frac {\\partial L}{\\partial W}$，$\\eta$表示学习率，实际上会取0.01或0.001这些事先决定好的值。式子中的$\\leftarrow$表示用右边的值更新左边的值。如上式，SGD是朝着梯度方向只能前进一定距离的简单方法。\n",
    "\n",
    "现在，我们将SGD实现为一个Python类。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "class SGD:\n",
    "    def __init__(self, lr=0.01):\n",
    "        self.lr = lr\n",
    "    \n",
    "    def update(self, params, grads):\n",
    "        for key in params.keys():\n",
    "            params[key] -= self.lr * grads[key]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这里，进行初始化时的参数 lr 表示 learning rate(学习率)。这个学习率会保存为实例变量。此外，代码段中还定义了 update(params, grads) 方法，这个方法在 SGD 中会被反复调用。参数 params 和 grads 是字典型变量，按 params['W1']、grads['W2'] 的形式，分别保存了权重参数和它们的梯度。\n",
    "\n",
    "使用这个 SGD 类，可以按照如下方式进行神经网络的参数的更新。（下面的代码是不能运行的伪代码）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "network = TwoLayerNet(...)\n",
    "optimizer = SGD() # “进行最优化的人”，由SGD承担这个角色\n",
    "\n",
    "for i in range(10000):\n",
    "    ...\n",
    "    x_batch, t_batch = get_mini_batch() # mini-batch\n",
    "    grads = network.gradient(x_batch, t_batch)\n",
    "    params = network.params\n",
    "    optimizer.update(params, grads)\n",
    "    ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数的更新由 optimizer 表示负责完成。我们在这里需要做的只是将参数和梯度的信息传给 optimizer。像这样，通过单独实现进行最优化的类，功能的模块化变得更简单。比如，后面我们实现另一个最优化方法 Momentum ，它同样会实现成拥有 update(params, grads) 这个共同方法的形式。这样一来，只需要将`optimizer = SGD()`这一语句换成`optimizer = Momentum()`，就可以从 SCD 切换为 Momentum。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### SGD的缺点\n",
    "如果函数的形状非均向(anisotropic)，比如呈延伸状，搜索的路径就会非常低效。低效的根本原因是，梯度的方向并没有指向最小值的方向。\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Momentum\n",
    "Momentum 是“动量”的意思，和物理有关。用数学式表示 Momentum 方法，如下所示。\n",
    "$$\n",
    "v \\leftarrow \\alpha v - \\eta \\frac{\\partial L }{\\partial W}\n",
    "$$\n",
    "$$\n",
    "W \\leftarrow W + v\n",
    "$$\n",
    "\n",
    "$W$表示要更新的权重参数，$\\frac{\\partial L }{\\partial W}$表示损失函数关于$W$的梯度，$\\eta$表示学习率。变量$v$对应物理上的速度。上式表示了物体在梯度方向上受力，在这个力的作用下，物体的速度增加这一物理法则。\n",
    "\n",
    "式中有$av$这一项。在物体不收任何力时，该项承担使物体逐渐减速的任务（$a$设定为0.9之类的值），对应物理上的地面摩擦或空气阻力。\n",
    "\n",
    "下面是 Momentum 的代码实现。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Momentum:\n",
    "    def __init__(self, lr=0.01, momentum=0.9): # 初始化对象\n",
    "        self.lr = lf\n",
    "        self.momentum = momentum\n",
    "        slef.v = None # 保存变量的速度，初始化时，v中什么都不保存\n",
    "    \n",
    "    def update(self, params, grads):\n",
    "        if self.v is None: # 第一次调用update()时，v以字典型变量的形式保存与参数结构相同的数据\n",
    "            self.v = {}\n",
    "            for key,val in params.items():\n",
    "                self.v[key] = np.zeros_like(val)\n",
    "                \n",
    "            for key in params.keys(): # 数学式的代码化\n",
    "                self.v[key] = self.momentum*self.v[key] - self.lr*grads[key]\n",
    "                params[key] += self.v[key]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### AdaGrad\n",
    "在神经网络的学习中，学习率$/eta$的值很重要。学习率过小，会导致学习花费过多时间；学习率过大，会导致学习发散而不能正确进行。AdaGrad 会为参数的每个元素适当地调整学习率。用数学式表示 AdaGrad 的更新方法如下。\n",
    "$$\n",
    "h \\leftarrow h + \\frac{\\partial L}{\\partial W} \\odot \\frac{\\partial L}{\\partial W}\n",
    "$$\n",
    "$$\n",
    "W \\leftarrow W - \\eta \\frac{1}{\\sqrt{h}} \\frac{\\partial L}{\\partial W}\n",
    "$$\n",
    "和前面的 SGD 一样，$W$b表示要更新的权重参数，$\\frac {\\partial L}{\\partial W}$表示损失函数关于$W$的梯度，$\\eta$表示学习率。新出现的变量$h$，保存了以前的所有梯度值的平方和（$\\odot$表示对应矩阵元素的乘法）。在更新参数时，乘以$\\frac{1}{\\sqrt{n}}$，以调整学习的尺度。说明参数的元素中变动较大的元素的学习率将变小。也就是说，可以按参数的元素进行学习率衰减，使变动大的参数的学习率逐渐减小。\n",
    "\n",
    "AdaGrad 会记录过去所有的梯度的平方和。因此学习越深入，更新的幅度就越小。\n",
    "\n",
    "AdaGrad 的实现过程如下。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "class AdaGrad:\n",
    "    def __init__(self, lr=0.01):\n",
    "        self.lr = lr\n",
    "        self.h = None\n",
    "        \n",
    "    def update(self, params, grads):\n",
    "        if self.h is None:\n",
    "            self.h = {}\n",
    "            for key, val in params.items():\n",
    "                self.h[key] = np.zeros_like(val)\n",
    "            \n",
    "        for key in params.keys():\n",
    "            self.h[key] += grads[key] * grads[key]\n",
    "            params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7) # 加微小值1e-7是为了防止当self.h[key]中有0时，将0用作除数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Adam\n",
    "Momentum 参照小球在碗里滚动的物理规则进行移动，AdaGrad 为参数的每个元素适当地调整更新步伐。如果将这两个方法融合在一起，就是 Adam 方法的基本思路。\n",
    "\n",
    "Adam 是2015年提出的新方法。理论有点复杂，直观地讲，就是融合了 Momentum 和 AdaGrad 的方法。通过组合前面两个方法的有点，有望实现参数空间的高效搜索。此外，进行超参数的“偏置校正”也是 Adam 的特征。不再做过多说明，详细内容参考原作者的论文。\n",
    "\n",
    "Adam 会设置3个超参数。一个是学习率，另外两个是 **1次momentum系数$\\beta1$** 和 **2次momentum系数$\\beta2$** 。根据论文，标准的设定值是$\\beta1$为0.9，$\\beta2$为0.999。\n",
    "\n",
    "Adam的实现如下。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Adam:\n",
    "    def __init__(self, lr=0.001, beta1=0.9, beta2=0.999):\n",
    "        self.lr = lr\n",
    "        self.beta1 = beta1\n",
    "        self.beta2 = beta2\n",
    "        self.iter = 0\n",
    "        self.m = None\n",
    "        self.v = None\n",
    "        \n",
    "    def update(self, params, grads):\n",
    "        if self.m is None:\n",
    "            self.m, self.v = {}, {}\n",
    "            for key, val in params.items():\n",
    "                self.m[key] = np.zeros_like(val)\n",
    "                self.v[key] = np.zeros_like(val)\n",
    "        \n",
    "        self.iter += 1\n",
    "        lr_t  = self.lr * np.sqrt(1.0 - self.beta2**self.iter) / (1.0 - self.beta1**self.iter)         \n",
    "        \n",
    "        for key in params.keys():\n",
    "            #self.m[key] = self.beta1*self.m[key] + (1-self.beta1)*grads[key]\n",
    "            #self.v[key] = self.beta2*self.v[key] + (1-self.beta2)*(grads[key]**2)\n",
    "            self.m[key] += (1 - self.beta1) * (grads[key] - self.m[key])\n",
    "            self.v[key] += (1 - self.beta2) * (grads[key]**2 - self.v[key])\n",
    "            \n",
    "            params[key] -= lr_t * self.m[key] / (np.sqrt(self.v[key]) + 1e-7)\n",
    "            \n",
    "            #unbias_m += (1 - self.beta1) * (grads[key] - self.m[key]) # correct bias\n",
    "            #unbisa_b += (1 - self.beta2) * (grads[key]*grads[key] - self.v[key]) # correct bias\n",
    "            #params[key] += self.lr * unbias_m / (np.sqrt(unbisa_b) + 1e-7)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 更新方法的选取\n",
    "我们上面介绍了4种更新参数的方法，这里我们来比较一下这4种方法。（看图）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding: utf-8\n",
    "import sys, os\n",
    "sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from collections import OrderedDict\n",
    "from common.optimizer import *\n",
    "\n",
    "\n",
    "def f(x, y):\n",
    "    return x**2 / 20.0 + y**2\n",
    "\n",
    "\n",
    "def df(x, y):\n",
    "    return x / 10.0, 2.0*y\n",
    "\n",
    "init_pos = (-7.0, 2.0)\n",
    "params = {}\n",
    "params['x'], params['y'] = init_pos[0], init_pos[1]\n",
    "grads = {}\n",
    "grads['x'], grads['y'] = 0, 0\n",
    "\n",
    "\n",
    "optimizers = OrderedDict()\n",
    "optimizers[\"SGD\"] = SGD(lr=0.95)\n",
    "optimizers[\"Momentum\"] = Momentum(lr=0.1)\n",
    "optimizers[\"AdaGrad\"] = AdaGrad(lr=1.5)\n",
    "optimizers[\"Adam\"] = Adam(lr=0.3)\n",
    "\n",
    "idx = 1\n",
    "\n",
    "for key in optimizers:\n",
    "    optimizer = optimizers[key]\n",
    "    x_history = []\n",
    "    y_history = []\n",
    "    params['x'], params['y'] = init_pos[0], init_pos[1]\n",
    "    \n",
    "    for i in range(30):\n",
    "        x_history.append(params['x'])\n",
    "        y_history.append(params['y'])\n",
    "        \n",
    "        grads['x'], grads['y'] = df(params['x'], params['y'])\n",
    "        optimizer.update(params, grads)\n",
    "    \n",
    "\n",
    "    x = np.arange(-10, 10, 0.01)\n",
    "    y = np.arange(-5, 5, 0.01)\n",
    "    \n",
    "    X, Y = np.meshgrid(x, y) \n",
    "    Z = f(X, Y)\n",
    "    \n",
    "    # for simple contour line  \n",
    "    mask = Z > 7\n",
    "    Z[mask] = 0\n",
    "    \n",
    "    # plot \n",
    "    plt.subplot(2, 2, idx)\n",
    "    idx += 1\n",
    "    plt.plot(x_history, y_history, 'o-', color=\"red\")\n",
    "    plt.contour(X, Y, Z)\n",
    "    plt.ylim(-10, 10)\n",
    "    plt.xlim(-10, 10)\n",
    "    plt.plot(0, 0, '+')\n",
    "    #colorbar()\n",
    "    #spring()\n",
    "    plt.title(key)\n",
    "    plt.xlabel(\"x\")\n",
    "    plt.ylabel(\"y\")\n",
    "    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如图所示，根据使用的方法不同，参数更新的路径也不同。只看这个图的话，AdaGrad 似乎是最好的，不过要注意，**结果会根据要解决的问题而变**。并且，**超参数（学习率等）的设定值不同，结果也会发生变化**。\n",
    "\n",
    "（目前）并不存在能在所有问题中都表现良好的方法。这4种方法各有各的特点，都有各自擅长解决的问题和不擅长解决的问题。\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 基于 MNIST 数据集的更新方法的比较\n",
    "以手写数字识别为例，比较前面介绍的 SGD、Momentum、AdaGrad、Adam 这4种方法，并确认不同的方法在学习进展上有多大程度的差异。看下面这张图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "===========iteration:0===========\n",
      "SGD:2.327378106678742\n",
      "Momentum:2.4049215789156895\n",
      "AdaGrad:2.290763811790712\n",
      "Adam:2.1898127549911663\n",
      "===========iteration:100===========\n",
      "SGD:1.614666492473536\n",
      "Momentum:0.22105673362000888\n",
      "AdaGrad:0.12947326764306843\n",
      "Adam:0.19330676994222087\n",
      "===========iteration:200===========\n",
      "SGD:0.8544323525258657\n",
      "Momentum:0.23278046158730312\n",
      "AdaGrad:0.10859212000013711\n",
      "Adam:0.10289128942472983\n",
      "===========iteration:300===========\n",
      "SGD:0.593402662704506\n",
      "Momentum:0.178035387715115\n",
      "AdaGrad:0.1075022853170095\n",
      "Adam:0.16982718299551386\n",
      "===========iteration:400===========\n",
      "SGD:0.46890966126445066\n",
      "Momentum:0.22015909234490139\n",
      "AdaGrad:0.11689798413915922\n",
      "Adam:0.20639896585044237\n",
      "===========iteration:500===========\n",
      "SGD:0.46413597815792407\n",
      "Momentum:0.21203287621770817\n",
      "AdaGrad:0.08937445071946183\n",
      "Adam:0.12284042487102655\n",
      "===========iteration:600===========\n",
      "SGD:0.34391359148269973\n",
      "Momentum:0.16485131590829427\n",
      "AdaGrad:0.09417850053614006\n",
      "Adam:0.15267389272048418\n",
      "===========iteration:700===========\n",
      "SGD:0.3563152256192688\n",
      "Momentum:0.16064910238944677\n",
      "AdaGrad:0.08258343422017259\n",
      "Adam:0.092253856939387\n",
      "===========iteration:800===========\n",
      "SGD:0.3598115533549707\n",
      "Momentum:0.14832686734354933\n",
      "AdaGrad:0.06648957506330977\n",
      "Adam:0.09643122056058254\n",
      "===========iteration:900===========\n",
      "SGD:0.34788810808024406\n",
      "Momentum:0.06718325117987081\n",
      "AdaGrad:0.05169727207720348\n",
      "Adam:0.04744485832744235\n",
      "===========iteration:1000===========\n",
      "SGD:0.28609382199248873\n",
      "Momentum:0.07364453263721396\n",
      "AdaGrad:0.044861894276603545\n",
      "Adam:0.041133459684981624\n",
      "===========iteration:1100===========\n",
      "SGD:0.2445087784141097\n",
      "Momentum:0.08021570408557294\n",
      "AdaGrad:0.0384344158170598\n",
      "Adam:0.047446273638966356\n",
      "===========iteration:1200===========\n",
      "SGD:0.18551933160817569\n",
      "Momentum:0.039658678303991335\n",
      "AdaGrad:0.02449405136723463\n",
      "Adam:0.018914936437275768\n",
      "===========iteration:1300===========\n",
      "SGD:0.29275528071480883\n",
      "Momentum:0.08203233789028296\n",
      "AdaGrad:0.07296714440859656\n",
      "Adam:0.019545204280419053\n",
      "===========iteration:1400===========\n",
      "SGD:0.20719087529622282\n",
      "Momentum:0.04027396188883485\n",
      "AdaGrad:0.023146941852535654\n",
      "Adam:0.024022956048223867\n",
      "===========iteration:1500===========\n",
      "SGD:0.12296120091328877\n",
      "Momentum:0.03825934097741197\n",
      "AdaGrad:0.011949396933479958\n",
      "Adam:0.019241368353800005\n",
      "===========iteration:1600===========\n",
      "SGD:0.19048109635325028\n",
      "Momentum:0.07003395122565975\n",
      "AdaGrad:0.028848040581992286\n",
      "Adam:0.029214974091411883\n",
      "===========iteration:1700===========\n",
      "SGD:0.2659781474744894\n",
      "Momentum:0.039065437466836134\n",
      "AdaGrad:0.041332885702991914\n",
      "Adam:0.03016376397630888\n",
      "===========iteration:1800===========\n",
      "SGD:0.273478654637231\n",
      "Momentum:0.08884251442989072\n",
      "AdaGrad:0.05014248496073565\n",
      "Adam:0.05916920012493774\n",
      "===========iteration:1900===========\n",
      "SGD:0.21803142750158433\n",
      "Momentum:0.03757597503241397\n",
      "AdaGrad:0.02295789534321592\n",
      "Adam:0.02817712395597793\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# coding: utf-8\n",
    "import os\n",
    "import sys\n",
    "sys.path.append(os.pardir)  # 为了导入父目录的文件而进行的设定\n",
    "import matplotlib.pyplot as plt\n",
    "from dataset.mnist import load_mnist\n",
    "from common.util import smooth_curve\n",
    "from common.multi_layer_net import MultiLayerNet\n",
    "from common.optimizer import *\n",
    "\n",
    "\n",
    "# 0:读入MNIST数据==========\n",
    "(x_train, t_train), (x_test, t_test) = load_mnist(normalize=True)\n",
    "\n",
    "train_size = x_train.shape[0]\n",
    "batch_size = 128\n",
    "max_iterations = 2000\n",
    "\n",
    "\n",
    "# 1:进行实验的设置==========\n",
    "optimizers = {}\n",
    "optimizers['SGD'] = SGD()\n",
    "optimizers['Momentum'] = Momentum()\n",
    "optimizers['AdaGrad'] = AdaGrad()\n",
    "optimizers['Adam'] = Adam()\n",
    "#optimizers['RMSprop'] = RMSprop()\n",
    "\n",
    "networks = {}\n",
    "train_loss = {}\n",
    "for key in optimizers.keys():\n",
    "    networks[key] = MultiLayerNet(\n",
    "        input_size=784, hidden_size_list=[100, 100, 100, 100],\n",
    "        output_size=10)\n",
    "    train_loss[key] = []    \n",
    "\n",
    "\n",
    "# 2:开始训练==========\n",
    "for i in range(max_iterations):\n",
    "    batch_mask = np.random.choice(train_size, batch_size)\n",
    "    x_batch = x_train[batch_mask]\n",
    "    t_batch = t_train[batch_mask]\n",
    "    \n",
    "    for key in optimizers.keys():\n",
    "        grads = networks[key].gradient(x_batch, t_batch)\n",
    "        optimizers[key].update(networks[key].params, grads)\n",
    "    \n",
    "        loss = networks[key].loss(x_batch, t_batch)\n",
    "        train_loss[key].append(loss)\n",
    "    \n",
    "    if i % 100 == 0:\n",
    "        print( \"===========\" + \"iteration:\" + str(i) + \"===========\")\n",
    "        for key in optimizers.keys():\n",
    "            loss = networks[key].loss(x_batch, t_batch)\n",
    "            print(key + \":\" + str(loss))\n",
    "\n",
    "\n",
    "# 3.绘制图形==========\n",
    "markers = {\"SGD\": \"o\", \"Momentum\": \"x\", \"AdaGrad\": \"s\", \"Adam\": \"D\"}\n",
    "x = np.arange(max_iterations)\n",
    "for key in optimizers.keys():\n",
    "    plt.plot(x, smooth_curve(train_loss[key]), marker=markers[key], markevery=100, label=key)\n",
    "plt.xlabel(\"iterations\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.ylim(0, 1)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这个实验以一个5层神经网络为对象，其中每层有100个神经元。激活函数使用的是ReLU。\n",
    "\n",
    "从图中结果可知，AdaGrad 学习进行的最快，然后是 Adam，接下来是 Momentum，最后是 SGD。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
